package com.duoduo.剑指Offer;

/**
 * @program: algorithm
 * @description: 翻转单词顺序28
 * 输入一个英文句子，翻转句子中单词的顺序，但单词内字符的顺序不变。为简单起见，标点符号和普通字母一样处理。例如输入字符串"I am a student. "，则输出"student. a am I"。
 *
 *  
 *
 * 示例 1：
 *
 * 输入: "the sky is blue"
 * 输出: "blue is sky the"
 * 示例 2：
 *
 * 输入: "  hello world!  "
 * 输出: "world! hello"
 * 解释: 输入字符串可以在前面或者后面包含多余的空格，但是反转后的字符不能包括。
 *
 * @author: chaidl  ！
 * @create: 2022-05-25 21:54
 */
public class 翻转单词顺序28 {
	public String reverseWords(String s) {
		//去除首位的空格
		s.trim();
		int i = s.length()-1,j = i;
		StringBuilder result=new StringBuilder();
		while (i>=0){
		//	找第一个空格
			while (i>=0 && (s.charAt(i) != ' ')){
				i--;
			}
			result.append(s.substring(i+1,j+1)+' ');
		//	寻找下一个不为空的字符串
			while (i>=0 && s.charAt(i) ==' '){
				i--;
			}
			j=i;
		}
		return result.toString().trim();
	}

}
